/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.resumesuspens.builder;

import java.util.ArrayList;
import java.util.List;

import fr.generali.accueilclient.resume.contrat.om.IResumeContrat;
import fr.generali.accueilclient.resume.contrat.om.IRole;
import fr.generali.accueilclient.resume.contrat.om.impl.Role;
import fr.generali.accueilclient.resume.suspens.builder.IOperationBuilder;
import fr.generali.accueilclient.resume.suspens.om.IOperation;
import fr.generali.accueilclient.resume.suspens.om.impl.DTOOperation;
import fr.generali.accueilclient.utils.constantes.CodeRoleEnum;
import fr.generali.souscriptiongestion.dommages.tosca.rechercheroperationscontratclient.ctr.elementscontrat.DTOPayeurPrimes;
import fr.generali.souscriptiongestion.dommages.tosca.rechercheroperationscontratclient.ctr.elementscontrat.DTOSouscripteur;
import fr.generali.souscriptiongestion.dommages.tosca.rechercheroperationscontratclient.ctr.operationscontrat.DTOOperationContrat;

/**
 * @author Holmes Kelly
 */
public class DTOOperationContrat2OperationBuilder implements IOperationBuilder {

    /**
     * 
     */
    private IOperation operation;

    /**
     * 
     */
    private DTOOperationContrat operationContrat;

    /**
     * @param operationContrat dtoOperationContrat
     */
    public DTOOperationContrat2OperationBuilder(DTOOperationContrat operationContrat) {
        this.operationContrat = operationContrat;
        operation = new DTOOperation();
    }

    /**
     * {@inheritDoc}
     */
    public void buildCodeAvancement() {
        operation.setCodeAvancement(operationContrat.getCodeAvancement());

    }

    /**
     * {@inheritDoc}
     */
    public void buildLibelleAvancement() {
        operation.setLibelleAvancement(operationContrat.getLibelleAvancement());

    }

    /**
     * {@inheritDoc}
     */
    public void buildLibelleStatut() {
        operation.setLibelleStatut(operationContrat.getLibelleStatutActeGestion());

    }

    /**
     * {@inheritDoc}
     */
    public IOperation getOperation() {

        return operation;
    }

    /**
     * {@inheritDoc}
     */
    public void buildAdresse() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildCategorie() {

        operation
                        .setCategorie(operationContrat.getContrat().getProduitReference().getFamilleProduit()
                                        .getIdentifiant());
    }

    /**
     * {@inheritDoc}
     */
    public void buildCodeCompagnie() {

        operation.setCodeCompagnie(operationContrat.getContrat().getCodeSocieteduGroupe());
    }

    /**
     * {@inheritDoc}
     */
    public void buildCodePortefeuille() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildCodeProduit() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildLibelleProduit() {

        operation.setLibelleProduit(operationContrat.getLibelle());
    }

    /**
     * {@inheritDoc}
     */
    public void buildCodeStatistique() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildCoordonneesBancaires() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildDateEffet() {

        operation.setDateEffet(operationContrat.getDateSaisie().toGregorianCalendar().getTime());
    }

    /**
     * {@inheritDoc}
     */
    public void buildDateEffetNouvelleAffaire() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildDateResiliation() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildEcheance() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildFrequence() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildModePaiement() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildMontantAnnuelHT() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildMontantAnnuelTTC() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildMotifFinActivite() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildNature() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildNatureAvenant() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildNumeroContrat() {
        operation.setNumeroContrat(operationContrat.getContrat().getIdentifiant());
    }

    /**
     * {@inheritDoc}
     */
    public void buildNumeroSuspens() {
        operation.setNumeroSuspens(operationContrat.getIdentifiant());
    }

    /**
     * {@inheritDoc}
     */
    public void buildRoles() {

        List<IRole> roles = new ArrayList<IRole>();

        DTOSouscripteur souscripteurContrat = operationContrat.getContrat().getSouscripteurContrat();
        if (souscripteurContrat != null) {
            IRole souscripteur = new Role();
            souscripteur.setNumeroClient(souscripteurContrat.getSouscripteur().getIdentifiantPersonne());
            souscripteur.setNom(null);
            souscripteur.setPrenom(null);
            souscripteur.setRole(CodeRoleEnum.ROLE_SOUSCRIPTEUR.getCodeRole());
            roles.add(souscripteur);
        }

        DTOPayeurPrimes payeurPrimes = operationContrat.getContrat().getPayeurPrimes();
        if (payeurPrimes != null) {
            IRole payeur = new Role();
            payeur.setNumeroClient(payeurPrimes.getPayeur().getIdentifiantPersonne());
            payeur.setNom(null);
            payeur.setPrenom(null);
            payeur.setRole(CodeRoleEnum.ROLE_PAYEUR.getCodeRole());
            roles.add(payeur);
        }
        operation.setRoles(roles);

    }

    /**
     * {@inheritDoc}
     */
    public void buildStatut() {
        operation.setStatut(operationContrat.getCodeStatutActeGestion());

    }

    /**
     * {@inheritDoc}
     */
    public void buildNatureRecouvrement() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildCoSouscripteur() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildPrecision() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildModeGestion() {

    }

    /**
     * {@inheritDoc}
     */
    public void buildSystemOrigine() {

    }

    /**
     * {@inheritDoc}
     */
    public IResumeContrat getResumeContrat() {

        return operation;
    }

}
